asm
  ld sp,$EFFF
  end asm

#include "./library/smsrnd.bas"
#include "./library/smsdelay.bas"

dim eee as uinteger at $E010
dim seed as uinteger at $E012
dim ee1 as uinteger at $E014
dim ee2 as uinteger at $E016
dim ee3 as uinteger at $E018
dim ee4 as uinteger at $E01A
dim ex0 as uinteger at $E01C
dim ey0 as uinteger at $E01E

sub mrdoputchar(txp1 as uinteger,typ1 as uinteger, tch1 as ubyte, tat1 as ubyte, tly1 as uinteger):
  poke $8400+($800*tly1)+(typ1 bxor 31)+(txp1*32),tch1
  poke $8000+($800*tly1)+(typ1 bxor 31)+(txp1*32),tat1
  end sub

seed=0

for ee1=0 to 31
  for ee2=0 to 31
    seed=smsrnd(seed):ee3=seed:seed=smsrnd(seed)
    mrdoputchar(ee2,ee1,seed band 3,ee3 band %00111111 ,1)
    next:next

for ee1=0 to 15
  for ee2=0 to 15
    mrdoputchar(ee2+11,ee1+14,ee1*16+ee2,$3F,1)
    next:next

ex0=12:ey0=4
eee=0
do
  mrdoputchar(5,2,48+(int(eee/100) mod 10),$3F,1)
  mrdoputchar(6,2,48+(int(eee/10) mod 10),$3F,1)
  mrdoputchar(7,2,48+(eee mod 10),$3F,1)

  ee3=peek($A000) bxor 255
  mrdoputchar(5,4,48+(int(ee3/100) mod 10),$3F,1)
  mrdoputchar(6,4,48+(int(ee3/10) mod 10),$3F,1)
  mrdoputchar(7,4,48+(ee3 mod 10),$3F,1)

  ex0=ex0+((ee3 band 4)/4)-((ee3 band 1)/1)
  ey0=ey0+((ee3 band 2)/2)-((ee3 band 8)/8)


  ee3=peek($A001) bxor 255
  mrdoputchar(5,5,48+(int(ee3/100) mod 10),$3F,1)
  mrdoputchar(6,5,48+(int(ee3/10) mod 10),$3F,1)
  mrdoputchar(7,5,48+(ee3 mod 10),$3F,1)

  ee3=peek($A002) bxor 255
  mrdoputchar(5,6,48+(int(ee3/100) mod 10),$3F,1)
  mrdoputchar(6,6,48+(int(ee3/10) mod 10),$3F,1)
  mrdoputchar(7,6,48+(ee3 mod 10),$3F,1)

  ee3=peek($A003) bxor 255
  mrdoputchar(5,7,48+(int(ee3/100) mod 10),$3F,1)
  mrdoputchar(6,7,48+(int(ee3/10) mod 10),$3F,1)
  mrdoputchar(7,7,48+(ee3 mod 10),$3F,1)




  mrdoputchar(ex0,ey0,eee,$17,1)

  eee=eee+1
loop






do:loop

'------------------------------------------------

do

for ee1=0 to 31
  for ee2=0 to 31
    seed=smsrnd(seed):ee3=seed:seed=smsrnd(seed)
    mrdoputchar(ee2,ee1,seed,ee3,1)
    smsdelay(1000)    
    next:next

loop




do

for eee=$8000 to $83FF '- bg chr
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(1000)
  next

for eee=$8400 to $87FF '- bg attr
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(1000)
  next


for eee=$8800 to $8FFF '- fg
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(1000)
  next

for eee=$9000 to $90FF '- spr
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(1000)
  next

loop





'- AM_RANGE(0x0000, 0x7fff) AM_ROM
'- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(mrdo_bgvideoram_w) AM_SHARE("bgvideoram")
'- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(mrdo_fgvideoram_w) AM_SHARE("fgvideoram")
'- AM_RANGE(0x9000, 0x90ff) AM_WRITEONLY AM_SHARE("spriteram")
'- AM_RANGE(0x9800, 0x9800) AM_WRITE(mrdo_flipscreen_w)    /* screen flip + playfield priority */
'- AM_RANGE(0x9801, 0x9801) AM_DEVWRITE("u8106_1", u8106_device, write)
'- AM_RANGE(0x9802, 0x9802) AM_DEVWRITE("u8106_2", u8106_device, write)
'- AM_RANGE(0x9803, 0x9803) AM_READ(mrdo_SECRE_r)
'- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
'- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P2")
'- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("DSW1")
'- AM_RANGE(0xa003, 0xa003) AM_READ_PORT("DSW2")
'- AM_RANGE(0xe000, 0xefff) AM_RAM
'- AM_RANGE(0xf000, 0xf7ff) AM_WRITE(mrdo_scrollx_w)
'- AM_RANGE(0xf800, 0xffff) AM_WRITE(mrdo_scrolly_w)


'''-----------------------------------------------------
'''- this will allocate the code to the second part of the rom, after ram area
'''- first part: $0000 to $1FFF (8kb) - second part: $4000 to $9FFF (24kb)
'''- copied from a code made for Casio PV1000
''goto flg01:
'''#include "library/somebinarystuffhere.bas"
''asm
''  org $4000
''  end asm
''flg01:
'''-----------------------------------------------------
'
'sub docastlehputchar(txl1 as uinteger, tyl1 as uinteger, tch1 as ubyte, tat1 as ubyte)
'  poke $B000+(txl1*32)+(tyl1 bxor 31),tch1
'  poke $B400+(txl1*32)+(tyl1 bxor 31),tat1
'  end sub
'
'seed=0
'
'  for eee=128 to 1023-128
'    seed=smsrnd(seed)
'    poke $B000+eee,seed
'    seed=smsrnd(seed)
'    poke $B400+eee,seed
'
'    docastlehputchar(5,2,48+((int(eee/100)) mod 10),31)
'    docastlehputchar(6,2,48+((int(eee/10)) mod 10),31)
'    docastlehputchar(7,2,48+((int(eee/1)) mod 10),31)
'
'    'smsdelay(1000)
'    next
'
'  '- sprites: $3800: y,x,attr,id
'  for eee=0 to 511
'    seed=smsrnd(seed)
'    poke $9800+eee,seed
'    poke $9800+4,128 'y
'    poke $9800+5,128 'x
'    poke $9800+6,eee 'atr
'    poke $9800+7,128 'id
'
'    docastlehputchar(5,2,48+((int(eee/100)) mod 10),29)
'    docastlehputchar(6,2,48+((int(eee/10)) mod 10),29)
'    docastlehputchar(7,2,48+((int(eee/1)) mod 10),29)
'
'    'smsdelay(1000)
'    next
'
'  for ee2=0 to 15
'    for ee3=0 to 15
'      docastlehputchar(11+ee3,14+ee2,ee3+(ee2*16),31)
'      next:next
'
'cntr=0
'
'ex0=12:ey0=8
'
'do
'  for ee3=0 to 7
'    eee=(peek($A000+ee3))bxor 255
'    docastlehputchar(5,7+ee3,48+((int(eee/100)) mod 10),15)
'    docastlehputchar(6,7+ee3,48+((int(eee/10)) mod 10),15)
'    docastlehputchar(7,7+ee3,48+((int(eee/1)) mod 10),15)
'    next
'
'  docastlehputchar(5,20,48+((int(cntr/100)) mod 10),11)
'  docastlehputchar(6,20,48+((int(cntr/10)) mod 10),11)
'  docastlehputchar(7,20,48+((int(cntr/1)) mod 10),11)
'  cntr=cntr+1
'
'  ex0=ex0+ ((peek($A003)band 4)/4)-((peek($A003)band 1)/1)
'  ey0=ey0+ ((peek($A003)band 2)/2)-((peek($A003)band 8)/8)
'
'  docastlehputchar(ex0,ey0,cntr,cntr)
'
'  loop
'
'do:loop
'
''-----------------------------------------------------
'
''8800-8bff Color RAM        (Not used in Intrepid/Super Mouse)
''8c00-8fff Mirror for above (Not used in Intrepid/Super Mouse)
''9000-93ff Video RAM
''9400-97ff Mirror for above (Color RAM in Intrepid/Super Mouse)
''9800-983f Attributes RAM
''9840-985f Sprite RAM
'
''0000-4fff ROM
''8000-87ff RAM
'
''-------------------------------------------------------------------------------
''dim ee2 as uinteger at $4C06
''dim ee3 as uinteger at $4C08
''dim ee4 as ubyte at $4C0A
''dim ecsp as ubyte at $4C0C
''dim ecsq as ubyte at $4C0E
''
''dim ex0 as uinteger at $4C10
''dim ey0 as uinteger at $4C12
''dim ex1 as uinteger at $4C14
''dim ey1 as uinteger at $4C16
''dim ex2 as uinteger at $4C18
''dim ey2 as uinteger at $4C1A
''dim ex3 as uinteger at $4C1C
''dim ey3 as uinteger at $4C1E
''
''dim ex4 as uinteger at $4C20
''dim ey4 as uinteger at $4C22
''dim ex5 as uinteger at $4C24
''dim ey5 as uinteger at $4C26
''dim ex6 as uinteger at $4C28
''dim ey6 as uinteger at $4C2A
''dim ex7 as uinteger at $4C2C
''dim ey7 as uinteger at $4C2E
''
''dim ej0 as uinteger at $4C30
''dim ej1 as uinteger at $4C32
''
''function test1(t1 as uinteger,t2 as uinteger,t3 as uinteger,t4 as uinteger)  as uinteger
''  end function
''
''sub zpoke(t1 as uinteger,t2 as ubyte)
''  poke t1,t2
''  end sub
''
''sub putchar(tx1 as uinteger, ty1 as uinteger, tch1 as uinteger)
''  poke ($4000+(tx1*32)+ty1) bxor %0000001111100000,(tch1 band 255)
''  end sub
''
''pacmanputsprite(0,21,10,4,3)
''pacmanputsprite(1,21,30,4,3)
''pacmanputsprite(2,21,50,4,3)
''pacmanputsprite(3,21,70,4,3)
''pacmanputsprite(4,21,90,4,3)
''pacmanputsprite(5,21,110,4,3)
''pacmanputsprite(6,21,130,4,3)
''pacmanputsprite(7,21,150,4,3)
''
''seed=0
''
''poke $4300,code("*")
''poke $4200,code("*")
''poke $4100,code("*")
''
''poke $4010,code("0")
''poke $400F,code("1")
''poke $4030,code("2")
''poke $402F,code("3")
''
''poke $43D0,code("0")
''poke $43CF,code("1")
''poke $43F0,code("2")
''poke $43EF,code("3")
''
''for ee2=0 to 11
''  poke ($4000+((ee2+12)*32)+13) bxor %0000001111100000,peek(@text01+ee2)
''  next
''
''for ee2=0 to 11
''  poke ($4000+(0*32)+(ee2+12)) bxor %0000000000011111,peek(@text01+ee2)+64
''  next
''
''for ee2=0 to 11
''  poke ($4000+(31*32)+(ee2+12)) bxor %0000000000011111,peek(@text01+ee2)+128
''  next
''
''ee4=0
''for ee3=15 to 15+15
''  for ee2=12 to 12+15
''    poke ($4000+(ee2*32)+ee3) bxor %0000001111100000,ee4
''    ee4=ee4+1
''    next
''    next
''
''for ee2=22 to 25
''  for ee3=6 to 9
''    poke ($4000+(ee2*32)+ee3) bxor %0000001111100000,code("X")
''    next
''    next
''
''test1(377,2445,63888,2342)
''
''eee=$4207
''i=code("Q")
''poke eee,i
''eee=eee+1
''i=code("T")
''poke eee,i
''
''seed=0
''for eee=$4400 to $47FF
''  seed=smsrnd(seed)
''  poke eee,seed
''  next
''
''ex0=20:ey0=10
''ex1=20:ey1=30
''ex2=20:ey2=50
''ex3=20:ey3=70
''ex4=20:ey4=90
''ex5=20:ey5=110
''ex6=20:ey6=130
''ex7=20:ey7=150
''eee=0
''ecsp=0:ecsq=0
''
''do
''poke $50C0,255 '- watchdog? - it seems to work! thanks, Jim Bagley!!!!
''
''ej0=peek($5000) bxor $ff
''ej1=peek($5040) bxor $ff
''
''poke ($4000+(6*32)+20) bxor %0000001111100000,ej0
''poke ($4000+(7*32)+20) bxor %0000001111100000,ej1
''
''poke ($4000+(8*32)+22) bxor %0000001111100000,48+(ex0 mod 10)
''poke ($4000+(7*32)+22) bxor %0000001111100000,48+((int(ex0/10)) mod 10)
''poke ($4000+(6*32)+22) bxor %0000001111100000,48+((int(ex0/100)) mod 10)
''
''poke ($4000+(8*32)+23) bxor %0000001111100000,48+(ey0 mod 10)
''poke ($4000+(7*32)+23) bxor %0000001111100000,48+((int(ey0/10)) mod 10)
''poke ($4000+(6*32)+23) bxor %0000001111100000,48+((int(ey0/100)) mod 10)
''
''poke ($4000+(8*32)+24) bxor %0000001111100000,48+(eee mod 10)
''poke ($4000+(7*32)+24) bxor %0000001111100000,48+((int(eee/10)) mod 10)
''poke ($4000+(6*32)+24) bxor %0000001111100000,48+((int(eee/100)) mod 10)
''poke ($4000+(5*32)+24) bxor %0000001111100000,48+((int(eee/1000)) mod 10)
''poke ($4000+(4*32)+24) bxor %0000001111100000,48+((int(eee/10000)) mod 10)
''
''poke ($4000+(8*32)+25) bxor %0000001111100000,48+(ej0 mod 10)
''poke ($4000+(7*32)+25) bxor %0000001111100000,48+((int(ej0/10)) mod 10)
''poke ($4000+(6*32)+25) bxor %0000001111100000,48+((int(ej0/100)) mod 10)
''
''poke ($4000+(8*32)+26) bxor %0000001111100000,48+(ej1 mod 10)
''poke ($4000+(7*32)+26) bxor %0000001111100000,48+((int(ej1/10)) mod 10)
''poke ($4000+(6*32)+26) bxor %0000001111100000,48+((int(ej1/100)) mod 10)
''
''poke ($4000+(8*32)+27) bxor %0000001111100000,48+(ecsp mod 10)
''
''
''if ecsp=0 then:
''  if (ej0 band 1)<>0 then: ey0=ey0-1:end if
''  if (ej0 band 2)<>0 then: ex0=ex0-1:end if
''  if (ej0 band 4)<>0 then: ex0=ex0+1:end if
''  if (ej0 band 8)<>0 then: ey0=ey0+1:end if
''  end if
''
''if ecsp=1 then:
''  if (ej0 band 1)<>0 then: ey1=ey1-1:end if
''  if (ej0 band 2)<>0 then: ex1=ex1-1:end if
''  if (ej0 band 4)<>0 then: ex1=ex1+1:end if
''  if (ej0 band 8)<>0 then: ey1=ey1+1:end if
''  end if
''
''if ecsp=2 then:
''  if (ej0 band 1)<>0 then: ey2=ey2-1:end if
''  if (ej0 band 2)<>0 then: ex2=ex2-1:end if
''  if (ej0 band 4)<>0 then: ex2=ex2+1:end if
''  if (ej0 band 8)<>0 then: ey2=ey2+1:end if
''  end if
''
''if ecsp=3 then:
''  if (ej0 band 1)<>0 then: ey3=ey3-1:end if
''  if (ej0 band 2)<>0 then: ex3=ex3-1:end if
''  if (ej0 band 4)<>0 then: ex3=ex3+1:end if
''  if (ej0 band 8)<>0 then: ey3=ey3+1:end if
''  end if
''
''if ecsp=4 then:
''  if (ej0 band 1)<>0 then: ey4=ey4-1:end if
''  if (ej0 band 2)<>0 then: ex4=ex4-1:end if
''  if (ej0 band 4)<>0 then: ex4=ex4+1:end if
''  if (ej0 band 8)<>0 then: ey4=ey4+1:end if
''  end if
''
''if ecsp=5 then:
''  if (ej0 band 1)<>0 then: ey5=ey5-1:end if
''  if (ej0 band 2)<>0 then: ex5=ex5-1:end if
''  if (ej0 band 4)<>0 then: ex5=ex5+1:end if
''  if (ej0 band 8)<>0 then: ey5=ey5+1:end if
''  end if
''
''if ecsp=6 then:
''  if (ej0 band 1)<>0 then: ey6=ey6-1:end if
''  if (ej0 band 2)<>0 then: ex6=ex6-1:end if
''  if (ej0 band 4)<>0 then: ex6=ex6+1:end if
''  if (ej0 band 8)<>0 then: ey6=ey6+1:end if
''  end if
''
''if ecsp=7 then:
''  if (ej0 band 1)<>0 then: ey7=ey7-1:end if
''  if (ej0 band 2)<>0 then: ex7=ex7-1:end if
''  if (ej0 band 4)<>0 then: ex7=ex7+1:end if
''  if (ej0 band 8)<>0 then: ey7=ey7+1:end if
''  end if
''
''if (ej1 band 15)<>0 then: ecsq=ecsq+1:end if
''ecsp=(int(ecsq/4))mod 8
''
''ee3=int(eee/4)
''
''pacmanputsprite(0,ex0,ey0,4,3)  '- layer,x,y,id,clut
''pacmanputsprite(1,ex1,ey1,ee3,3)  '- layer,x,y,id,clut
''pacmanputsprite(2,ex2,ey2,4,ee3)  '- layer,x,y,id,clut
''pacmanputsprite(3,ex3,ey3,ee3,ee3)  '- layer,x,y,id,clut
''pacmanputsprite(4,ex4,ey4,4,3)  '- layer,x,y,id,clut
''pacmanputsprite(5,ex5,ey5,ee3,3)  '- layer,x,y,id,clut
''pacmanputsprite(6,ex6,ey6,4,ee3)  '- layer,x,y,id,clut
''pacmanputsprite(7,ex7,ey7,ee3,ee3)  '- layer,x,y,id,clut
''
''eee=eee+1
''loop
''
'''-------------------------------------------------------------------------------
''
''do
''loop
''
'''-------------------------------------------------------------------------------
''
''text01:
''asm
''  defb "HELLO WORLD!!!!!"
''  end asm
''
'''-------------------------------------------------------------------------------
''
''poke $5000,255
''
'''- this should put some characters on the pattern display area
''for i=0 to 255
''  poke $4040+i,i
''  poke $4440+i,i
''  next
''
''do
''loop
''
'''-------------------------------------------------------------------------------
''
''
''
